home *** CD-ROM | disk | FTP | other *** search
- /*
- ** $VER: makexref.rexx 1.0 (8.9.95) Rolf Rotvel
- **
- ** Uses rexxtricks.library
- */
-
- parse arg file
-
- call addlib('rexxsupport.library', 0, -30, 0)
- call addlib('rexxtricks.library', 0, -30, 0)
-
- if ~readfile(file, line) then do
- say 'Error reading '||file
- exit 10
- end
-
- if upper(word(line.1, 1)) ~= '@DATABASE' then do
- say file||' is not an AmigaGuide file'
- exit 10
- end
-
- filename = '"'||filepart(file)||'"'
- xref = makesuffix(file, 'xref', 'r')
-
- num = 1
- len = 0
- sta = 1
- do forever
- chk = lsearch('@node*', line, sta,, 'p')
- if chk = -1 then leave /* No more nodes */
- sta = chk + 1
-
- node = word(line.chk, 2)
- if pos('"', node) > 0 then parse var line.chk '"' node '"'
- if upper(node) = 'MAIN' then iterate
-
- if right(node, 2) = '()' then what.num = ' 0 1' /* It's a function */
- else what.num = ' 0 0'
-
- if words(node) > 1 then node.num = '"'||node||'"'
- else node.num = node
-
- len = max(len, length(node.num))
- num = num + 1
- end
- node.0 = num - 1
-
- write.1 = 'XREF:'
- num = 2
- len = len + 2
-
- do n = 1 to node.0
- write.num = left(node.n, len)||filename||what.n
- num = num + 1
- end
- write.num = '#'
- write.0 = num
-
- call writefile(xref, write)
-
- exit
-